package com.sise.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sise.bean.CodeMsg;
import com.sise.entity.ToDo;
import com.sise.mapper.ToDoMapper;
import com.sise.service.IToDoService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * @author zj
 */
@Service
public class ToDoServiceImpl extends ServiceImpl<ToDoMapper, ToDo> implements IToDoService {

    @Resource
    private ToDoMapper toDoMapper;

    @Override
    public CodeMsg getTODO() {
        QueryWrapper<ToDo> toDoQueryWrapper = new QueryWrapper<>();
        toDoQueryWrapper.lambda().eq(ToDo::getStatus, 0).orderByAsc(ToDo::getCreateTime);
        List<ToDo> toDoList = toDoMapper.selectList(toDoQueryWrapper);
        return new CodeMsg().setCode(200).setData(toDoList);
    }

    @Override
    public CodeMsg addTODO(String content) {
        if (content == null || "".equals(content.trim())) {
            return new CodeMsg().setCode(400).setMsg("内容不允许为空");
        }
        ToDo toDo = new ToDo().setContent(content).setStatus(0).setCreateTime(new Date());
        int insert = toDoMapper.insert(toDo);
        if (insert == 1) {
            return new CodeMsg().setCode(200).setMsg("添加成功");
        } else {
            return new CodeMsg().setCode(400).setMsg("添加失败");
        }
    }

    @Override
    public CodeMsg deleteTODO(Integer id) {
        ToDo toDo = toDoMapper.selectById(id);
        if (toDo != null) {
            int i = toDoMapper.deleteById(id);
            if (i == 1) {
                return new CodeMsg().setCode(200).setMsg("删除成功");
            } else {
                return new CodeMsg().setCode(400).setMsg("删除失败");
            }
        } else {
            return new CodeMsg().setCode(400).setMsg("删除失败");
        }
    }

    @Override
    public CodeMsg updateTODOContent(Integer id, String content) {
        if (content == null || content.trim().equals("")) {
            return new CodeMsg().setCode(400).setMsg("内容不允许为空");
        }
        ToDo toDo = toDoMapper.selectById(id);
        if (toDo != null) {
            toDo.setContent(content);
            int i = toDoMapper.updateById(toDo);
            if (i == 1) {
                return new CodeMsg().setCode(200).setMsg("更新成功");
            } else {
                return new CodeMsg().setCode(400).setMsg("更新失败");
            }
        } else {
            return new CodeMsg().setCode(400).setMsg("更新失败");
        }
    }

    @Override
    public CodeMsg completeTODO(Integer[] ids) {
        for (Integer id : ids) {
            ToDo toDo = toDoMapper.selectById(id);
            toDo.setStatus(1);
            toDoMapper.updateById(toDo);
        }
        return new CodeMsg().setCode(200).setMsg("成功");
    }
}
